//
// Created by Jisam on 08/10/2024 20:35.
// Solution of  d2
#include <bits/stdc++.h>

#define  int long long
#define  endl "\n"
#define  all(x) (x).begin(),(x).end()
#define  pb push_back
using namespace std;


signed main() {
    cin.tie(nullptr)->sync_with_stdio(false);
// 定义变量n、t、s，分别代表点的数量、传送带速度和步行速度
    int n, t, s;
    // 从标准输入读取点的数量n、步行速度s和传送带速度t
        cin >> n >> s >> t;
    // 初始化向量a、b、c、d和vis，用于存储每个点的坐标、传送带坐标和访问状态
        vector<int> a(n), b(n), c(n), d(n), vis(n);
    // 读取每个点的坐标和传送带坐标
        for (int i = 0; i < n; i++) {
            cin >> a[i] >> b[i] >> c[i] >> d[i];
        }
    // 初始化变量ans为无穷大，用于存储最短时间
        double ans = INFINITY;

    // 定义深度优先搜索函数dfs，用于遍历所有可能的路径并计算最短时间
        auto dfs = [&](auto dfs, int x, int y, double sum = 0.0, int z = 0) {
            // 如果已经遍历了所有点，更新最短时间ans
            if (z == n) {
                ans = min(ans, sum);
                return;
            }
            // 遍历所有点，尝试从每个未访问的点出发
            for (int i = 0; i < n; i++) {
                // 如果点i已经被访问，则跳过
                if (vis[i]) continue;
                // 计算从当前点(x, y)到点i的直线距离d1
                double d1 = hypot(a[i] - x, b[i] - y);
                // 计算从当前点(x, y)到传送带点i的直线距离d2
                double d2 = hypot(c[i] - x, d[i] - y);
                // 计算点i到传送带点i的直线距离d0
                double d0 = hypot(a[i] - c[i], b[i] - d[i]);
                // 标记点i为已访问
                vis[i] = 1;
                // 从传送带点i出发，计算最短时间
                dfs(dfs, c[i], d[i], sum + d1 / s + d0 / t, z + 1);
                // 从点i出发，计算最短时间
                dfs(dfs, a[i], b[i], sum + d2 / s + d0 / t, z + 1);
                // 恢复点i的访问状态
                vis[i] = 0;
            }
        };
    // 从原点开始深度优先搜索，计算最短时间
        dfs(dfs, 0, 0, 0.0);
    // 输出最短时间，保留20位小数
        cout << fixed << setprecision(20) << ans << endl;

    return 0;
}